package com.tudouji.project.bill.service;

import java.util.List;

import com.flow.service.pojo.BasePojo;
import com.tudouji.framework.web.domain.AjaxResult;
import com.tudouji.project.bill.domain.Transferapply;
import com.tudouji.project.bill.domain.Transferapplyitem;
import com.tudouji.project.bill.domain.Whinformitem;
import com.tudouji.project.bill.domain.Whoutformitem;
import com.tudouji.project.system.domain.SysUser;
import com.tudouji.project.wlinfo.domain.Wlinfo;

/**
 * 库房调拨Service接口
 * 
 * @author tudouji
 * @date 2021-03-22
 */
public interface ITransferapplyService 
{
    /**
     * 查询库房调拨
     * 
     * @param guid 库房调拨ID
     * @return 库房调拨
     */
    public Transferapply selectTransferapplyById(String guid);

    public Transferapply selectTransferapplyByNewId(Long id);

    /**
     * 查询库房调拨列表
     * 
     * @param transferapply 库房调拨
     * @return 库房调拨集合
     */
    public List<Transferapply> selectTransferapplyList(Transferapply transferapply);

    /**
     * 查询库房调拨列表
     *
     * @param transferapply 库房调拨
     * @return 库房调拨集合
     */
    public List<Transferapply> findPagePC(Transferapply transferapply, String functiontype);

    /**
     * 新增库房调拨
     * 
     * @param transferapply 库房调拨
     * @return 结果
     */
    public int insertTransferapply(Transferapply transferapply);

    /**
     * 修改库房调拨
     * 
     * @param transferapply 库房调拨
     * @return 结果
     */
    public int updateTransferapply(Transferapply transferapply);

    /**
     * 批量删除库房调拨
     * 
     * @param guids 需要删除的库房调拨ID
     * @return 结果
     */
    public int deleteTransferapplyByIds(String[] guids);

    /**
     * 删除库房调拨信息
     * 
     * @param guid 库房调拨ID
     * @return 结果
     */
    public int deleteTransferapplyById(String guid);

    AjaxResult save(Transferapply transferapply, String fileIds) throws Exception;

    AjaxResult approval(Long id, String imgids, String opinion, Long taskid);

    AjaxResult refuse(Long id, String fileIds, String opinion, Long taskid, Long refuseNodeid, Long backUserid);

    AjaxResult financial(Long id, String imgids, String opinion, Long taskid, Integer quality);

    List<Transferapply> selectTransferapplyList(Transferapply transferapply, String status, String functionType);

    AjaxResult finance(Long id, String fileIds, String opinion, List<Transferapplyitem> items, Long taskid);

    AjaxResult transferWhin(Long id, List<Whinformitem> items, String imgids, String opinion, Long taskid, SysUser sysUser);

    AjaxResult tranferWhout(Long id, List<Whoutformitem> items, String imgids, String opinion, Long taskid, SysUser sysUser);

    AjaxResult whinBack(Long id, String fileIds, String opinion, Long taskid);

    AjaxResult reSendCar(Wlinfo wlinfo, Long id, String fileIds, String opinion, Long taskid);

    AjaxResult reToSendCar(Long id);

    AjaxResult whoutBack(Long id, String fileIds, String opinion, Long taskid);

    Transferapply selectTransferapplyByCode(String code);

    AjaxResult findDetail(Long id);

    AjaxResult del(Long id);
}
